package hotel.switchs.oversea.online.mapper;

import hotel.base.oversea.dto.switchs.SwitchCreateRoomDto;
import hotel.base.oversea.repository.MyMapper;
import hotel.base.oversea.vo.meituan.request.room.CompareRoomForFpVO;
import hotel.switchs.oversea.api.VO.SwitchHotelUpVo;
import hotel.switchs.oversea.api.entity.SwitchCreateRoomEntity;
import hotel.switchs.oversea.api.entity.SwitchHotelUpEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Auther: 你的名字
 * @Date: 2020/09/22/21:57
 * @Description:
 */
public interface SwitchHotelUpMapper extends MyMapper<SwitchHotelUpEntity> {
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 设置酒店上下线
    */
    int updateHotelStatus(@Param("hotelId") int hotelId, @Param("status") int status);
    /***
     * @Author: lmf
     * @Date: 2020/9/23
     * 设置酒店状态
     */
    int updateHotelSaleStatus(@Param("hotelId") int hotelId, @Param("status") int status);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 获取所有上架的酒店id
    */
    List<SwitchHotelUpVo> selectHotelIds(@Param("status") int status);
    /***
     * @Author: lmf
     * @Date: 2020/9/23
     * 获取所有上架的酒店id
     */
    List<Integer> selectIds(@Param("status") int status);
    /***
    * @Author: lmf
    * @Date: 2020/12/22
     * 获取所有售卖的酒店id
    */
    List<Integer> selectSaleHotelList();
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 指定id进行批量更新
    */
    int updateHotelStatis(@Param("ids") String ids, @Param("status") int status);
    /***
    * @Author: lmf
    * @Date: 2020/12/22
     * updateHotelSale
    */
    int updateHotelSale(@Param("ids") String ids, @Param("status") int status);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 判断是否存在酒店
    */
    SwitchHotelUpEntity selectByHotelId(@Param("hotelId") int hotelId);
    /***
    * @Author: lmf
    * @Date: 2020/9/23
     * 获取酒店所有数据
    */
    List<SwitchHotelUpEntity> selectByHotelName(@Param("name") String hotelName);

    List<Integer> getUpHotelAsc();

    List<Integer> getUpHotelDesc();
    /**
     *
     * @author: lmf
     * @time: 2020/10/14 18:01
     * 获取上架的售卖房型总数量
     */
    int getRoomIdOfHotelNum();
    /**
     *
     * @author: lmf
     * @time: 2020/10/15 11:42
     * 获取十天内有订单的酒店列表且酒店已经上架
     */
    List<Integer> selectOrderHotelId();
    /**
     *
     * @author: lmf
     * @time: 2020/10/15 11:42
     * 获取参与促销活动的酒店列表且酒店已经上架的酒店id
     */
    List<Integer> selectTagHotelId();
    /**
     *
     * @author: lmf
     * @time: 2020/10/15 13:48
     * 获取十天有订单的酒店列表且酒店已经上架的售卖房型总数
     */
    int selectOrderHotelRoomIdNum();
    /**
     *
     * @author: lmf
     * @time: 2020/10/15 13:49
     * 获取参与促销活动的酒店列表且酒店已经上架的酒店的售卖房型个数
     */
    int selectTagHotelRoomIdNum();

    List<SwitchCreateRoomDto> getUpHotelGoodsData();

    List<SwitchCreateRoomDto> getUpHotelGoodsDataByHotelId(Map map);

    /**
     * 美团的酒店id
     * @param hotelId
     * @return
     */
    Integer selectMtHotelIdByHotelId(@Param("hotelId") int hotelId);

    List<CompareRoomForFpVO> getUpHotelGoodsDataFp();

    List<SwitchCreateRoomDto> getUpHotelGoodsDataByMap(Map map);
    /***
    * @Author: lmf
    * @Date: 2020/12/22
     * 获取开启售卖酒店
    */
    List<SwitchHotelUpVo> selectHotelStatus(@Param("status") int status);
    /***
    * @Author: lmf
    * @Date: 2020/12/25
     * 获取已有房型的在售酒店列表
    */
    List<Integer> selectSaleHotelListByRoomList();

    /***
    * @Author: lmf
    * @Date: 2020/12/28
     * 获取有订单的美团酒店列表
    */
    List<Integer> getOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2020/12/31
     * 获取没有订单的酒店列表
    */
    List<Integer> getNoOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2020/12/31
     * 获取暂时停售的酒店列表
    */
    List<Integer> getBookTimeDownHotelList();
    /***
    * @Author: lmf
    * @Date: 2021/1/4
     * 获取售卖酒店数据
    */
    List<Integer> getUpHotelList();
    /***
    * @Author: lmf
    * @Date: 2021/1/7
     * 每个一个礼拜随机获取三千家没有订单的酒店进行下架
    */
    List<Integer> selectNoOrderHotelListByWeek(@Param("num") int num);
    /***
    * @Author: lmf
    * @Date: 2021/1/7
     * 获取未上架的酒店数量
    */
    List<Integer> selectHotelByUp(@Param("num") int num);
    /***
    * @Author: lmf
    * @Date: 2021/1/12
     * 获取售卖的酒店列表
    */
    List<SwitchHotelUpEntity> selectSaleHotel();


    List<SwitchCreateRoomDto> getUpHotelGoodsDataForRemove();

    List<SwitchCreateRoomDto> getUpHotelGoodsDataByMapForRemove(Map map);
    /***
    * @Author: lmf
    * @Date: 2021/1/28
     * 获取在售的酒店进行效验酒店房态+价格是否有更新
    */
    List<Integer> getSaleHotelListToCheckPriceAndStatus();
    /***
    * @Author: lmf
    * @Date: 2021/2/1
     * 获取所有酒店列表
    */
    List<Integer> replaceList();
    /***
    * @Author: lmf
    * @Date: 2021/2/2
     * 获取所有酒店的取消规则
    */
    List<Integer> getOrderHotelCancelRule();
    /***
    * @Author: lmf
    * @Date: 2021/2/26
     * 获取上架一个礼拜有订单的酒店
    */
    List<Integer> selectHaveOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2021/2/26
     * 获取上架一个礼拜没有订单的酒店
    */
    List<Integer> selectHaveNoOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2021/3/1
     * 获取已经绑定过第二类公式，但是仍然没有订单的酒店
    */
    List<Integer> selectHaveRelationAfterNoOrderHotelList();
    /***
    * @Author: lmf
    * @Date: 2021/4/2
     * 根据酒店id获取数据
    */
    SwitchHotelUpEntity selectHotelById(@Param("hotelId") int childHotelId);

    /***
     * @Author: lmf
     * @Date: 2021/4/7
     * 获取参与活动的酒店数据列表
     */
    List<Integer> selectJoinActiveHotelList(@Param("num") int num);
    /***
     * @Author: lmf
     * @Date: 2021/4/27
     * 获取可以上架的酒店列表
     */
    List<Integer> getCanSaleHotelList(@Param("num") int num);
    /**
     * 获取分配价格公式后仍没有订单的酒店列表
     * @param
     * @return
     */
    List<Integer> selectNoOrderHotelListByReation(@Param("formula") Integer formula);

    /**
     * 获取阶梯取消的酒店数据
     * @param
     * @return
     */
    List<Integer> selectFormualLadderDownHotelId(@Param("formula") int formula);
    /**
     * 获取在售酒店 使用价格公式3的且没有轮出的酒店数据
     * @return
     */
    List<Integer> selectOutPutIsZeroHotelList();

    void truncateTable();
    /**
     * 导出有订单的酒店数据
     * @return
     */
    List<Integer> exportOrderHotel();
    /**
     * 获取天天特价酒店数据
     * @return
     */
    List<SwitchCreateRoomEntity> exportActiveHotel(Integer num);
    /**
     * 获取普通酒店数据
     * @return
     */
    List<Integer> selectCommonHotelList();
}
